home *** CD-ROM | disk | FTP | other *** search
/ Sound Fx / Sound Fx.iso / Software / UNZIPED / FS105DEM / START.MS_ / START.bin
Encoding:
Text File  |  1995-04-05  |  32.5 KB  |  1,033 lines

  1. '*************************************************************************************************
  2. '
  3. ' START.MST
  4. '
  5. ' FreeMIDI/FreeStyle for Windows setup script
  6. '
  7. ' (C) Copyright 1995 by Mark of the Unicorn, Inc.
  8. '
  9. '*************************************************************************************************
  10.  
  11.  
  12. '*************************************************************************************************
  13. ' resource ids
  14. '
  15. ' NOTE: These ids should be kept in sync with those in FMSETUP.RH!
  16. '*************************************************************************************************
  17. ' bitmaps...
  18. CONST BMP_MOTU_LOGO                        = 1
  19.  
  20. ' dialogs...
  21. CONST DLG_WELCOME                            = 1
  22. CONST DLG_FOLDERS                            = 2
  23. CONST DLG_READY                            = 3
  24. CONST DLG_HELP                                = 5
  25. CONST DLG_SPECIAL                            = 6
  26. CONST DLG_ASK_ABOUT_ICONS                = 10
  27. CONST DLG_COMPLETE_WITHOUT_ICONS        = 11
  28. CONST DLG_COMPLETE_WITH_ICONS            = 12
  29. CONST DLG_ASK_KORG_DRIVERS                = 14
  30. CONST DLG_ASK_MOTU_DRIVERS                = 15
  31. CONST DLG_UPDATE_KORG_DRIVERS            = 16
  32. CONST DLG_UPDATE_MOTU_DRIVERS            = 17
  33. CONST DLG_ASK_ABOUT_ICONS_95             = 18
  34. CONST DLG_COMPLETE_WITH_ICONS_95     = 19
  35. CONST DLG_COMPLETE_WITHOUT_ICONS_95    = 20
  36. CONST DLG_RESTART_WITHOUT_ICONS        = 22
  37. CONST DLG_RESTART_WITH_ICONS            = 23
  38. CONST DLG_RESTART_WITHOUT_ICONS_95    = 24
  39. CONST DLG_RESTART_WITH_ICONS_95        = 25
  40. CONST DLG_ASK_OPEN_MID                    = 26
  41. CONST DLG_LICENSE                            = 27
  42. CONST DLG_WELCOME_KORG                    = 28
  43. CONST DLG_WELCOME_DEMO                    = 29
  44. CONST DLG_ASK_DIRECT_DRIVERS            = 35
  45. CONST DLG_INSTALL_DRIVERS                = 36
  46. CONST DLG_RUN_CONTROL_PANEL            = 37
  47. CONST DLG_RUN_CONTROL_PANEL_95        = 38
  48. CONST DLG_UPDATE_DRIVERS                = 39
  49. CONST DLG_WELCOME_ROLAND                  = 40
  50.  
  51. ' error strings...
  52. CONST ERR_NO_CONTROL_PANEL             = 100
  53. CONST ERR_NO_VIEW_README                = 101
  54. CONST ERR_NO_PROGMAN                        = 102
  55. CONST ERR_BAD_PATH                        = 103
  56. CONST ERR_NOT_LOCAL_DRIVE                = 104
  57. CONST ERR_SHARED_WINDOWS                  = 105
  58. CONST ERR_SLOW_MACHINE                    = 106
  59. CONST ERR_NONWRITABLE_PATH                = 107
  60. CONST ERR_NONWRITABLE_SYSTEM_PATH     = 108
  61. CONST ERR_NO_DISK_SPACE                    = 109
  62. CONST ERR_FREESTYLE_RUNNING            = 110
  63. CONST ERR_RESTART_FAILED                = 111
  64. CONST ERR_NO_REGEDIT                        = 113
  65. CONST ERR_NO_INSTALL_FONT                = 114
  66.  
  67. ' message strings...
  68. CONST MSG_RESTART_INFO                    = 112
  69. CONST MSG_RUN_AGAIN                        = 115
  70.  
  71. ' WinHelp topic identifiers...
  72. CONST HLP_QUICK_START_GUIDE            = 318
  73.  
  74.  
  75. '*************************************************************************************************
  76. ' for use with ShowWindow
  77. '*************************************************************************************************
  78. CONST SW_SHOWNORMAL                        = 1
  79. CONST SW_SHOWNOACTIVATE                       = 4
  80. CONST SW_RESTORE                          = 9
  81.  
  82.  
  83. '*************************************************************************************************
  84. ' "imports"
  85. '*************************************************************************************************
  86. DECLARE SUB MessageBeep LIB "user.exe" (uType%)
  87. DECLARE SUB ShowWindow LIB "user.exe" (hwnd%, uShowCmd%)
  88. DECLARE FUNCTION WinExec LIB "kernel.dll" (szPath$, iCmdShow%) AS INTEGER
  89. '$ifndef DEBUG
  90. DECLARE FUNCTION FValidFATDir LIB "mscomstf.dll" (szDir$) AS INTEGER
  91. '$endif
  92. DECLARE FUNCTION QueryForOldMotUDrivers LIB "setuplib.dll" AS INTEGER
  93. DECLARE FUNCTION QueryForOldKorgDrivers LIB "setuplib.dll" AS INTEGER
  94. DECLARE FUNCTION QueryForOldRolandDrivers LIB "setuplib.dll" AS INTEGER
  95. DECLARE FUNCTION QueryForNewDrivers LIB "setuplib.dll" AS INTEGER
  96. DECLARE FUNCTION IsQuickScribeFontInstalled LIB "setuplib.dll" AS INTEGER
  97. DECLARE FUNCTION InstallFont LIB "setuplib.dll" (szFontFile$, szFontPath$) AS INTEGER
  98. DECLARE FUNCTION IsFreeStyleOrFreeMIDILoaded LIB "setuplib.dll" (szAltFreeStyleName$) AS INTEGER
  99.  
  100.  
  101. '*************************************************************************************************
  102. ' globals (initialized by SL_START)
  103. '*************************************************************************************************
  104. GLOBAL g_SetupLibName$                        ' SETUPLIB.DLL
  105. GLOBAL g_SourcePath$                            ' path of installation diskettes
  106. GLOBAL g_TempPath$                            ' path of temporary setup directory
  107. GLOBAL g_FontFileName$                         ' name of FreeStyle's QuickScribe font
  108. GLOBAL g_FreeStyleName$
  109. GLOBAL g_FreeStyleFullName$
  110. GLOBAL g_FreeStyleEXEName$
  111. GLOBAL g_FreeStyleHLPName$
  112. GLOBAL g_DLG_ASK_ABOUT_ICONS%
  113. GLOBAL g_DLG_COMPLETE_WITH_ICONS%
  114. GLOBAL g_DLG_COMPLETE_WITHOUT_ICONS%
  115. GLOBAL g_DLG_RUN_CONTROL_PANEL%
  116. GLOBAL g_IsWindows95%
  117. GLOBAL g_DLG_WELCOME%
  118. GLOBAL g_ShowQuickStartGuide%
  119. GLOBAL g_EnoughDiskSpace%
  120. GLOBAL g_CopyListPrepared%
  121.  
  122.  
  123. '$INCLUDE 'initvars.mst'
  124.  
  125.  
  126. '*************************************************************************************************
  127. '
  128. ' SL_START
  129. '
  130. ' NOTE: Called by SETUPLIB.MST
  131. '
  132. '*************************************************************************************************
  133. SL_START:
  134.     ' init internal variables...
  135.  
  136.     GOSUB INIT_GLOBAL_VARS
  137.  
  138.     ' set other globals
  139.     g_SetupLibName$                     = "SETUPLIB.DLL"
  140.     g_SourcePath$                        = GetSymbolValue("STF_SRCDIR")
  141.     g_TempPath$                            = GetSymbolValue("STF_CWDDIR")
  142.     g_FontFileName$                    = "QUICS___.TTF"
  143.     g_FreeStyleEXEName$                = g_FreeStyleShortName$ + ".EXE"
  144.     g_FreeStyleHLPName$                = g_FreeStyleShortName$ + ".HLP"
  145.     g_EnoughDiskSpace%                = 0
  146.     g_CopyListPrepared%                = 0
  147.  
  148.     ' first assume Windows 3.1...
  149.     g_DLG_ASK_ABOUT_ICONS%              = DLG_ASK_ABOUT_ICONS
  150.     g_DLG_RUN_CONTROL_PANEL%          = DLG_RUN_CONTROL_PANEL
  151.     g_DLG_COMPLETE_WITH_ICONS%          = DLG_COMPLETE_WITH_ICONS
  152.     g_DLG_COMPLETE_WITHOUT_ICONS%    = DLG_COMPLETE_WITHOUT_ICONS
  153.     g_DLG_RESTART_WITH_ICONS%          = DLG_RESTART_WITH_ICONS
  154.     g_DLG_RESTART_WITHOUT_ICONS%     = DLG_RESTART_WITHOUT_ICONS
  155.     g_IsWindows95 = 0
  156.  
  157.     ' ...then check for Windows 95...
  158.     IF GetWindowsMajorVersion() = 3 THEN
  159.         IF GetWindowsMinorVersion() >= 95 THEN
  160.             g_DLG_ASK_ABOUT_ICONS%             = DLG_ASK_ABOUT_ICONS_95
  161.             g_DLG_RUN_CONTROL_PANEL%         = DLG_RUN_CONTROL_PANEL_95
  162.             g_DLG_COMPLETE_WITH_ICONS%        = DLG_COMPLETE_WITH_ICONS_95
  163.             g_DLG_COMPLETE_WITHOUT_ICONS%    = DLG_COMPLETE_WITHOUT_ICONS_95
  164.             g_DLG_RESTART_WITH_ICONS%        = DLG_RESTART_WITH_ICONS_95
  165.             g_DLG_RESTART_WITHOUT_ICONS%    = DLG_RESTART_WITHOUT_ICONS_95
  166.             g_IsWindows95 = 1
  167.         END IF
  168.     END IF
  169.  
  170.     ' setup toolkit symbols and variables...
  171.     SetSymbolValue "SYM_SL_SETUP_TITLE", g_FreeStyleFullName$ + " " + g_WordForSetup$
  172.     SetSymbolValue "SYM_SL_NEEDS_CTL3D", "Y"
  173.     SetTitle GetSymbolValue("SYM_SL_SETUP_TITLE")
  174.     SetBitmap g_SetupLibName$, BMP_MOTU_LOGO
  175.     SetAbout GetSymbolValue("SYM_SL_SETUP_TITLE"), "Copyright (C) 1995-1996 by Mark of the Unicorn, Inc."
  176.     NotUsed% = SetBeepingMode(1)
  177.  
  178.     ' init setup symbols...
  179.  
  180.     SetSymbolValue "IDC_FREESTYLE_PATH", GetIniKeyString("WIN.INI", "FreeStyle.Setup", "folder")
  181.     IF GetSymbolValue("IDC_FREESTYLE_PATH") = "" THEN
  182.         GetLocalHardDrivesList("SYM_DRIVES")
  183.         SetSymbolValue "IDC_FREESTYLE_PATH", GetListItem("SYM_DRIVES", 1) + ":\" + g_FreeStyleShortName$
  184.     END IF
  185.  
  186.     ' setup some custom symbols
  187.     SetSymbolValue "IDC_FREEMIDI_PATH", LCASE$(GetWindowsDir()) + "FreeMIDI"
  188.     SetSymbolValue "SYM_ADD_PROGMAN_ICONS", "Y"
  189.     SetSymbolValue "SYM_HAS_MOTU_DRIVERS", "N"
  190.     SetSymbolValue "SYM_HAS_KORG_DRIVERS", "N"
  191.     SetSymbolValue "SYM_INSTALL_FONTS", "Y"
  192.  
  193.     ' create list of brands to maybe ask user about (see ASK_ABOUT_OTHER_DRIVERS)
  194.     AddListItem "BRAND_LIST", "KORG (PC I/F)"
  195.     AddListItem "BRAND_LIST", "Roland (serial MIDI)"
  196.  
  197.     GOTO WELCOME
  198.  
  199.  
  200. '*************************************************************************************************
  201. '
  202. ' WELCOME
  203. '
  204. '*************************************************************************************************
  205. WELCOME:
  206.     UserChoice$ = UIStartDlg(g_SetupLibName$, g_DLG_WELCOME%, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
  207.  
  208.     IF UserChoice$ = "IDC_NEXT" THEN
  209.  
  210.         UIPop 1
  211.  
  212.         ' make sure we can install stuff
  213. CHECK_FOR_LOADED_MODULES:
  214.         IF IsFreeStyleOrFreeMIDILoaded(g_FreeStyleShortName$) = 1 THEN
  215.             Button% = sl_MessageBoxFromId(ERR_FREESTYLE_RUNNING, MB_RETRYCANCEL + MB_ICONSTOP)
  216.             IF Button% = IDRETRY THEN
  217.                 GOTO CHECK_FOR_LOADED_MODULES
  218.             ELSE
  219.                 GOTO SL_END
  220.             END IF
  221.         END IF
  222.  
  223.         ' make sure user is cool
  224.         IF g_ShowLicenseAgreement% THEN
  225.             GOSUB ASK_LICENSE_AGREEMENT    ' NOTE: does not return is user does not accept license
  226.         END IF
  227.  
  228.         ' make sure we can install on this machine
  229.         GOSUB CHECK_REQUIREMENTS
  230.  
  231.         ' make sure MotU MIDI driver are up-to-date...
  232.         HasOldMotUDrivers% = QueryForOldMotUDrivers()
  233.         HasOldKorgDrivers% = QueryForOldKorgDrivers()
  234.         HasOldRolandDrivers% = QueryForOldRolandDrivers()
  235.  
  236.         ' empty the list and add items, if necessary
  237.         SetSymbolValue "UPDATE_BRAND_LIST", ""
  238.         SetSymbolValue "UPDATE_BRAND_LIST", ""
  239.  
  240.         IF HasOldMotUDrivers% = 1 THEN
  241.             AddListItem "UPDATE_BRAND_LIST", "Mark of the Unicorn"
  242.         END IF
  243.  
  244.         IF HasOldKorgDrivers% = 1 THEN
  245.             AddListItem "UPDATE_BRAND_LIST", "KORG (PC I/F)"
  246.         END IF
  247.  
  248.         IF HasOldRolandDrivers% = 1 THEN
  249.             AddListItem "UPDATE_BRAND_LIST", "Roland (serial MIDI)"
  250.         END IF
  251.  
  252.         IF GetListLength("UPDATE_BRAND_LIST") > 0 THEN
  253.             GOTO UPDATE_DRIVERS
  254.         END IF
  255.  
  256.         IF QueryForNewDrivers() = 0 THEN
  257.             GOSUB ASK_ABOUT_DRIVERS
  258.         END IF
  259.  
  260.         GOTO SELECT_FOLDERS
  261.  
  262.     ELSE
  263.         GOSUB SL_QUERY_QUIT    ' NOTE: does not return if user decides to quit
  264.         GOTO WELCOME
  265.     END IF
  266.  
  267.  
  268. '*************************************************************************************************
  269. '
  270. ' ASK_LICENSE_AGREEMENT
  271. '
  272. '*************************************************************************************************
  273. ASK_LICENSE_AGREEMENT:
  274.     UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_LICENSE, "DLG_LICENSE_Proc", DLG_HELP, "DLG_HELP_Proc")
  275.     UIPop 1
  276.  
  277.     IF UserChoice$ = "IDCANCEL" THEN
  278.         GOSUB SL_QUERY_QUIT    ' NOTE: does not return if user decides to quit
  279.         GOTO ASK_LICENSE_AGREEMENT
  280.     END IF
  281.  
  282.     IF UserChoice$ = "IDYES" THEN
  283.         RETURN
  284.     END IF
  285.  
  286.     IF UserChoice$ = "IDNO" THEN
  287.         GOTO SL_END
  288.     END IF
  289.  
  290.     GOTO SL_FAIL    ' NOTE: should not happen!
  291.  
  292.  
  293. '*************************************************************************************************
  294. '
  295. ' CHECK_REQUIREMENTS
  296. '
  297. '*************************************************************************************************
  298. CHECK_REQUIREMENTS:
  299.     ' make sure Windows is not a network installation
  300.     IF IsWindowsShared() = 1 THEN
  301.         NotUsed% = sl_MessageBoxFromId(ERR_SHARED_WINDOWS, MB_OK + MB_ICONSTOP)
  302.         GOTO SL_END
  303.     END IF
  304.  
  305.     ' second check to make sure can write to the system folder
  306.     IF IsDirWritable(GetWindowsSysDir()) = 0 THEN
  307.         NotUsed% = sl_MessageBoxFromId(ERR_NONWRITABLE_SYSTEM_PATH, MB_OK + MB_ICONSTOP)
  308.         GOTO SL_FAIL
  309.     END IF
  310.  
  311.     ' make sure machine is not too slow
  312.     IF GetProcessorType() < 4 THEN
  313.         NotUsed% = sl_MessageBoxFromId(ERR_SLOW_MACHINE, MB_OK + MB_ICONSTOP)
  314.         GOTO SL_END
  315.     END IF
  316.  
  317.     ' check RAM ?
  318.  
  319.     RETURN
  320.  
  321.  
  322. '*************************************************************************************************
  323. '
  324. ' UPDATE_DRIVERS
  325. '
  326. '*************************************************************************************************
  327. UPDATE_DRIVERS:
  328.     UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_UPDATE_DRIVERS, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
  329.     UIPop 1
  330.  
  331.     IF UserChoice$ = "IDCANCEL" THEN
  332.         GOSUB SL_QUERY_QUIT    ' NOTE: does not return if user decides to quit
  333.         GOTO UPDATE_DRIVERS
  334.     END IF
  335.  
  336.     IF UserChoice$ = "IDC_PREV" THEN
  337. '        GOTO ASK_ABOUT_DRIVERS
  338.         GOTO WELCOME
  339.     END IF
  340.  
  341.     IF UserChoice$ = "IDC_NEXT" THEN
  342.         GOSUB RUN_CONTROL_PANEL
  343.         GOTO UPDATE_DRIVERS
  344.     END IF
  345.  
  346.     GOTO SL_FAIL    ' NOTE: should not happen!
  347.  
  348.  
  349. '*************************************************************************************************
  350. '
  351. ' UPDATE_MOTU_DRIVERS
  352. '
  353. '*************************************************************************************************
  354. 'UPDATE_MOTU_DRIVERS:
  355. '    UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_UPDATE_MOTU_DRIVERS, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
  356. '    UIPop 1
  357. '
  358. '    IF UserChoice$ = "IDCANCEL" THEN
  359. '        GOSUB SL_QUERY_QUIT    ' NOTE: does not return if user decides to quit
  360. '        GOTO UPDATE_MOTU_DRIVERS
  361. '    END IF
  362. '
  363. '    IF UserChoice$ = "IDC_PREV" THEN
  364. '        GOTO ASK_ABOUT_DRIVERS
  365. '    END IF
  366. '
  367. '    IF UserChoice$ = "IDC_NEXT" THEN
  368. '        GOSUB RUN_CONTROL_PANEL
  369. '        GOTO UPDATE_MOTU_DRIVERS
  370. '    END IF
  371. '
  372. '    GOTO SL_FAIL    ' NOTE: should not happen!
  373.  
  374.  
  375. '*************************************************************************************************
  376. '
  377. ' UPDATE_KORG_DRIVERS
  378. '
  379. '*************************************************************************************************
  380. 'UPDATE_KORG_DRIVERS:
  381. '    UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_UPDATE_KORG_DRIVERS, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
  382. '
  383. '    IF UserChoice$ = "IDCANCEL" THEN
  384. '        GOSUB SL_QUERY_QUIT    ' NOTE: does not return if user decides to quit
  385. '        GOTO UPDATE_KORG_DRIVERS
  386. '    END IF
  387. '
  388. '    UIPop 1
  389. '
  390. '    IF UserChoice$ = "IDC_PREV" THEN
  391. '        GOTO ASK_ABOUT_DRIVERS
  392. '    END IF
  393. '
  394. '    IF UserChoice$ = "IDC_NEXT" THEN
  395. '        GOSUB RUN_CONTROL_PANEL
  396. '        GOTO UPDATE_KORG_DRIVERS
  397. '    END IF
  398. '
  399. '    GOTO SL_FAIL    ' NOTE: should not happen!
  400.  
  401.  
  402. '*************************************************************************************************
  403. '
  404. ' ASK_ABOUT_DRIVERS
  405. '
  406. '*************************************************************************************************
  407. ASK_ABOUT_DRIVERS:
  408.     UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_ASK_MOTU_DRIVERS, "DLG_ASK_MOTU_DRIVERS_Proc", DLG_HELP, "DLG_HELP_Proc")
  409.  
  410.     IF UserChoice$ = "IDCANCEL" THEN
  411.         GOSUB SL_QUERY_QUIT    ' NOTE: does not return if user decides to quit
  412.         GOTO ASK_ABOUT_DRIVERS
  413.     END IF
  414.  
  415.     UIPop 1
  416.  
  417.     IF UserChoice$ = "IDC_PREV" THEN
  418.         GOTO WELCOME
  419.     END IF
  420.  
  421.     IF UserChoice$ = "IDC_NEXT" THEN
  422.         GOTO ASK_ABOUT_OTHER_DRIVERS
  423.     END IF
  424.  
  425.     GOTO SL_FAIL    ' NOTE: should not happen!
  426.  
  427. 'ASK_ABOUT_KORG_DRIVERS:
  428. '    UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_ASK_KORG_DRIVERS, "DLG_ASK_KORG_DRIVERS_Proc", DLG_HELP, "DLG_HELP_Proc")
  429.  
  430. ASK_ABOUT_OTHER_DRIVERS:
  431.  
  432.     SetSymbolValue "UPDATE_BRAND_LIST", ""
  433.     IF GetSymbolValue("SYM_HAS_MOTU_DRIVERS") = "Y" THEN
  434.         AddListItem "UPDATE_BRAND_LIST", "Mark of the Unicorn"
  435.     END IF
  436.  
  437.     UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_ASK_DIRECT_DRIVERS, "DLG_ASK_DIRECT_DRIVERS_Proc", DLG_HELP, "DLG_HELP_Proc")
  438.  
  439.     IF UserChoice$ = "IDCANCEL" THEN
  440.         GOSUB SL_QUERY_QUIT    ' NOTE: does not return if user decides to quit
  441. '        GOTO ASK_ABOUT_KORG_DRIVERS
  442.         GOTO ASK_ABOUT_OTHER_DRIVERS
  443.     END IF
  444.  
  445.     UIPop 1
  446.  
  447.     IF UserChoice$ = "IDC_PREV" THEN
  448.         GOTO ASK_ABOUT_DRIVERS
  449.     END IF
  450.  
  451.     IF UserChoice$ = "IDC_NEXT" THEN
  452.  
  453.         IF GetListLength("UPDATE_BRAND_LIST") > 0 THEN
  454.             GOTO INSTALL_DRIVERS
  455.         END IF
  456.  
  457. '        IF GetSymbolValue("SYM_HAS_MOTU_DRIVERS") = "Y" THEN
  458. '            GOTO INSTALL_DRIVERS
  459. '        END IF
  460. '        IF GetSymbolValue("SYM_HAS_KORG_DRIVERS") = "Y" THEN
  461. '            GOTO INSTALL_DRIVERS
  462. '        END IF
  463.  
  464.         RETURN
  465.  
  466.     END IF
  467.  
  468.     GOTO SL_FAIL    ' NOTE: should not happen!
  469.  
  470.  
  471. '*************************************************************************************************
  472. '
  473. ' INSTALL_DRIVERS
  474. '
  475. '*************************************************************************************************
  476. INSTALL_DRIVERS:
  477.     UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_INSTALL_DRIVERS, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
  478.  
  479.     IF UserChoice$ = "IDCANCEL" THEN
  480.         GOSUB SL_QUERY_QUIT    ' NOTE: does not return if user decides to quit
  481.         GOTO INSTALL_DRIVERS
  482.     END IF
  483.  
  484.     UIPop 1
  485.  
  486.     IF UserChoice$ = "IDC_PREV" THEN
  487.         GOTO ASK_ABOUT_DRIVERS
  488.     END IF
  489.  
  490.     IF UserChoice$ = "IDC_NEXT" THEN
  491. '        IF GetSymbolValue("SYM_HAS_LATEST_MOTU_DRIVERS") = "N" THEN
  492.             GOSUB RUN_CONTROL_PANEL
  493.             GOTO INSTALL_DRIVERS
  494. '        ELSE
  495. '            RETURN
  496. '        END IF
  497.     END IF
  498.  
  499.     GOTO SL_FAIL    ' NOTE: should not happen!
  500.  
  501.  
  502. '*************************************************************************************************
  503. '
  504. ' RUN_CONTROL_PANEL
  505. '
  506. '*************************************************************************************************
  507. RUN_CONTROL_PANEL:
  508.     UserChoice$ = UIStartDlg(g_SetupLibName$, g_DLG_RUN_CONTROL_PANEL%, "DLG_RUN_CONTROL_PANEL_Proc", DLG_HELP, "DLG_HELP_Proc")
  509.  
  510.     IF UserChoice$ = "IDCANCEL" THEN
  511.         GOSUB SL_QUERY_QUIT    ' NOTE: does not return if user decides to quit
  512.         GOTO RUN_CONTROL_PANEL
  513.     END IF
  514.  
  515.     UIPop 1
  516.  
  517.     IF UserChoice$ = "IDC_PREV" THEN
  518.         RETURN
  519.     END IF
  520.  
  521.     IF UserChoice$ = "IDC_NEXT" THEN
  522.  
  523.         NotUsed% = sl_MessageBoxFromId(MSG_RUN_AGAIN, MB_OK + MB_ICONINFORMATION)
  524.  
  525.         ShowWindow HwndFrame(), SW_HIDE
  526.  
  527.         IF g_IsWindows95% = 0 THEN
  528.             ' Windows 3.1 method...
  529.             IF WinExec("control " + g_DriversIconName$, SW_SHOWNOACTIVATE) >= 32 THEN
  530.                 GOTO CONTROL_PANEL_OK
  531.             ENDIF
  532.         ELSE
  533.             ' Windows 95 method...
  534.             IF WinExec("control", SW_SHOWNOACTIVATE) >= 32 THEN
  535.                 GOTO CONTROL_PANEL_OK
  536.             ENDIF
  537.         END IF
  538.         NotUsed% = sl_MessageBoxFromId(ERR_NO_CONTROL_PANEL, MB_OK + MB_ICONEXCLAMATION)
  539.  
  540. CONTROL_PANEL_OK:
  541.     GOTO SL_END
  542.     END IF
  543.  
  544.     GOTO SL_FAIL    ' NOTE: should not happen!
  545.  
  546.  
  547. '*************************************************************************************************
  548. '
  549. ' SELECT_FOLDERS:
  550. '
  551. '*************************************************************************************************
  552. SELECT_FOLDERS:
  553.     UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_FOLDERS, "DLG_FOLDERS_Proc", DLG_HELP, "DLG_HELP_Proc")
  554.  
  555.     IF UserChoice$ = "IDCANCEL" THEN
  556.         GOSUB SL_QUERY_QUIT    ' NOTE: does not return if user decides to quit
  557.         GOTO SELECT_FOLDERS
  558.     END IF
  559.  
  560.     IF UserChoice$ = "IDC_NEXT" THEN
  561.         FreeStylePath$ = GetSymbolValue("IDC_FREESTYLE_PATH")
  562.  
  563.         ' make sure path is valid
  564.         IF FValidFATDir(FreeStylePath$) = 0 THEN
  565.             NotUsed% = sl_MessageBoxFormatFromId_s(ERR_BAD_PATH, FreeStylePath$, MB_OK + MB_ICONEXCLAMATION)
  566.             GOTO SELECT_FOLDERS
  567.         END IF
  568.  
  569.         ' make sure path is writable
  570.         IF IsDirWritable(FreeStylePath$) = 0 THEN
  571.             NotUsed% = sl_MessageBoxFormatFromId_s(ERR_NONWRITABLE_PATH, FreeStylePath$, MB_OK + MB_ICONEXCLAMATION)
  572.             GOTO SELECT_FOLDERS
  573.         END IF
  574.  
  575.         ' make sure path's disk is local
  576.         IF IsDriveLocalHard(FreeStylePath$) = 0 THEN
  577.             NotUsed% = sl_MessageBoxFormatFromId_s(ERR_NOT_LOCAL_DRIVE, UCASE$(CHR$(ASC(FreeStylePath$))), MB_OK + MB_ICONINFORMATION)
  578.             GOTO SELECT_FOLDERS
  579.         END IF
  580.  
  581.         UIPop 1
  582.         GOTO ASK_ABOUT_ICONS
  583.     END IF
  584.  
  585.     IF UserChoice$ = "IDC_PREV" THEN
  586.         UIPop 1
  587.         GOTO WELCOME
  588.     END IF
  589.  
  590.     GOTO SL_FAIL    ' NOTE: should not happen!
  591.  
  592.  
  593. '*************************************************************************************************
  594. '
  595. ' ASK_ABOUT_ICONS
  596. '
  597. '*************************************************************************************************
  598. ASK_ABOUT_ICONS:
  599.     UserChoice$ = UIStartDlg(g_SetupLibName$, g_DLG_ASK_ABOUT_ICONS%, "DLG_ASK_ABOUT_ICONS_Proc", DLG_HELP, "DLG_HELP_Proc")
  600.  
  601.     IF UserChoice$ = "IDCANCEL" THEN
  602.         GOSUB SL_QUERY_QUIT
  603.         GOTO ASK_ABOUT_ICONS
  604.     END IF
  605.  
  606.     UIPop 1
  607.  
  608.     IF UserChoice$ = "IDC_NEXT" THEN
  609.         GOTO ASK_OPEN_MID
  610.     END IF
  611.  
  612.     IF UserChoice$ = "IDC_PREV" THEN
  613.         GOTO SELECT_FOLDERS
  614.     END IF
  615.  
  616.     GOTO SL_FAIL    ' NOTE: should not happen!
  617.  
  618.  
  619. '*************************************************************************************************
  620. '
  621. ' ASK_OPEN_MID
  622. '
  623. '*************************************************************************************************
  624. ASK_OPEN_MID:
  625.     UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_ASK_OPEN_MID, "DLG_ASK_OPEN_MID_Proc", DLG_HELP, "DLG_HELP_Proc")
  626.  
  627.     IF UserChoice$ = "IDCANCEL" THEN
  628.         GOSUB SL_QUERY_QUIT
  629.         GOTO ASK_OPEN_MID
  630.     END IF
  631.  
  632.     UIPop 1
  633.  
  634.     IF UserChoice$ = "IDC_NEXT" THEN
  635.         GOTO READY_TO_INSTALL
  636.     END IF
  637.  
  638.     IF UserChoice$ = "IDC_PREV" THEN
  639.         GOTO ASK_ABOUT_ICONS
  640.     END IF
  641.  
  642.     GOTO SL_FAIL    ' NOTE: should not happen!
  643.  
  644.  
  645. '*************************************************************************************************
  646. '
  647. ' READY_TO_INSTALL
  648. '
  649. '*************************************************************************************************
  650. READY_TO_INSTALL:
  651.     UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_READY, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
  652.  
  653.     IF UserChoice$ = "IDCANCEL" THEN
  654.         GOSUB SL_QUERY_QUIT    ' NOTE: does not return if user decides to quit
  655.         GOTO READY_TO_INSTALL
  656.     END IF
  657.  
  658.     UIPop 1
  659.  
  660.     IF UserChoice$ = "IDC_NEXT" THEN
  661.         GOTO INSTALL_FOLDERS_AND_FILES
  662.     END IF
  663.  
  664.     IF UserChoice$ = "IDC_PREV" THEN
  665.         GOTO ASK_OPEN_MID
  666.     END IF
  667.  
  668.     GOTO SL_FAIL    ' NOTE: should not happen!
  669.  
  670.  
  671. '*************************************************************************************************
  672. '
  673. ' CHECK_DISK_SPACE
  674. '
  675. '*************************************************************************************************
  676. CHECK_DISK_SPACE:
  677.     ExtraSpace$                      = "EXTRA_SPACE"
  678.     FreeStyleDriveLetter$    = UCASE$(CHR$(ASC(GetSymbolValue("IDC_FREESTYLE_PATH"))))
  679.     FreeStyleDriveNumber%    = (ASC(FreeStyleDriveLetter$) - ASC("A"))
  680.     FreeMIDIDriveLetter$        = UCASE$(CHR$(ASC(GetSymbolValue("IDC_FREEMIDI_PATH"))))
  681.     FreeMIDIDriveNumber%        = (ASC(FreeMIDIDriveLetter$) - ASC("A"))
  682.  
  683.     ' have Setup toolkit figure out how much space is required on all drives...
  684.     SetSymbolValue ExtraSpace$, ""
  685.     FOR Drive% = 0 TO 25 STEP 1
  686.         IF Drive% = FreeStyleDriveNumber% THEN
  687.             AddListItem ExtraSpace$, "1500000"        ' decompresssion space + 0.5MB user work space
  688.             EXIT FOR
  689.         ELSE
  690.             IF Drive% = FreeMIDIDriveNumber% THEN
  691.                 AddListItem ExtraSpace$, "1000000"    ' decompresssion space
  692.                 EXIT FOR
  693.             ELSE
  694.                 AddListItem ExtraSpace$, "0"
  695.             END IF
  696.         END IF
  697.     NEXT Drive%
  698.  
  699.     ' if there is not enough room, find first drive that is too small and tell user...
  700.     IF GetCopyListCost(ExtraSpace$, "", "COPY_COSTS") = 0 THEN
  701.         g_EnoughDiskSpace% = 1
  702.     ELSE
  703.         FOR Drive% = 1 TO 26 STEP 1
  704.             IF VAL(GetListItem("COPY_COSTS", Drive%)) > 0 THEN
  705.                 Button% = sl_MessageBoxFormatFromId_s(ERR_NO_DISK_SPACE, CHR$(ASC("A") + Drive% - 1), MB_ABORTRETRYIGNORE + MB_ICONSTOP)
  706.  
  707.                 IF Button% = IDABORT THEN
  708.                     GOTO SL_END
  709.                 END IF
  710.  
  711.                 IF Button% = IDIGNORE THEN
  712.                     g_EnoughDiskSpace% = 1
  713.                 ELSE
  714.                     g_EnoughDiskSpace% = 0
  715.                 END IF
  716.  
  717.                 EXIT FOR
  718.  
  719. '                Button% = sl_MessageBoxFormatFromId_s(ERR_NO_DISK_SPACE, CHR$(ASC("A") + Drive% - 1), MB_RETRYCANCEL + MB_ICONSTOP)
  720. '                IF Button% = IDCANCEL THEN
  721. '                    GOTO SL_END
  722. '                END IF
  723. '                 EXIT FOR
  724.  
  725.             END IF
  726.         NEXT Drive%
  727.     END IF
  728.  
  729.     RETURN
  730.  
  731.  
  732. '*************************************************************************************************
  733. '
  734. ' INSTALL_FOLDERS_AND_FILES
  735. '
  736. '*************************************************************************************************
  737. INSTALL_FOLDERS_AND_FILES:
  738.  
  739.     FreeMIDIPath$     = GetSymbolValue("IDC_FREEMIDI_PATH") + "\"
  740.     FreeStylePath$    = GetSymbolValue("IDC_FREESTYLE_PATH") + "\"
  741.     DefNamesPath$     = FreeMIDIPath$ + "DefNames\"
  742.  
  743.     IF g_CopyListPrepared% = 0 THEN
  744.  
  745.         PrevCursor% = ShowWaitCursor
  746.  
  747.         ' if needed, must set now
  748.         SetRestartDir FreeStylePath$
  749.  
  750.         ' read info file
  751.         ReadInfFile g_TempPath$ + "setup.inf"
  752.  
  753.         ' add FreeMIDI files to copy list
  754.         AddSectionFilesToCopyList "FreeMIDI", g_SourcePath$, FreeMIDIPath$
  755.         AddSectionFilesToCopyList "FreeMIDI_System", g_SourcePath$, GetWindowsSysDir()
  756.  
  757.         ' add DefNames files to copy list
  758.         AddSectionFilesToCopyList "DefNames", g_SourcePath$, DefNamesPath$
  759.         AddSectionFilesToCopyList "DefNames_Alesis", g_SourcePath$, DefNamesPath$ + "Alesis"
  760.         AddSectionFilesToCopyList "DefNames_Digitech", g_SourcePath$, DefNamesPath$ + "Digitech"
  761.         AddSectionFilesToCopyList "DefNames_Emu", g_SourcePath$, DefNamesPath$ + "E-mu"
  762.         AddSectionFilesToCopyList "DefNames_Ensoniq", g_SourcePath$, DefNamesPath$ + "Ensoniq"
  763.         AddSectionFilesToCopyList "DefNames_Kawai", g_SourcePath$, DefNamesPath$ + "Kawai"
  764.         AddSectionFilesToCopyList "DefNames_Korg", g_SourcePath$, DefNamesPath$ + "Korg"
  765.         AddSectionFilesToCopyList "DefNames_Kurzweil", g_SourcePath$, DefNamesPath$ + "Kurzweil"
  766.         AddSectionFilesToCopyList "DefNames_Roland", g_SourcePath$, DefNamesPath$ + "Roland"
  767.         AddSectionFilesToCopyList "DefNames_TBS", g_SourcePath$, DefNamesPath$ + "TBS"
  768.         AddSectionFilesToCopyList "DefNames_Yamaha", g_SourcePath$, DefNamesPath$ + "Yamaha"
  769.  
  770.         ' add FreeStyle files to copy list
  771.         AddSectionFilesToCopyList "FreeStyle", g_SourcePath$, FreeStylePath$
  772.         AddSectionFilesToCopyList "FreeStyle_Demos", g_SourcePath$, FreeStylePath$ + "Demos"
  773.         AddSectionFilesToCopyList "FreeStyle_Metronom", g_SourcePath$, FreeStylePath$ + "Metronom"
  774.         AddSectionFilesToCopyList "FreeStyle_System", g_SourcePath$, GetWindowsSysDir()
  775.  
  776.         ' add FreeStyle files to copy list that have different names in different version (all
  777.         ' these files are part of the "FreeStyle_Special" section)
  778.         AddSpecialFileToCopyList "FreeStyle_Special", "ReadMe", g_SourcePath$, FreeStylePath$ + g_ReadMeShortName$
  779.         AddSpecialFileToCopyList "FreeStyle_Special", "FreeStyle_EXE", g_SourcePath$, FreeStylePath$ + g_FreeStyleEXEName$
  780.         AddSpecialFileToCopyList "FreeStyle_Special", "FreeStyle_HLP", g_SourcePath$, FreeStylePath$ + g_FreeStyleHLPName$
  781.         AddSpecialFileToCopyList "FreeStyle_Special", "Player_Library", g_SourcePath$, FreeStylePath$ + g_FreeStyleShortName$ + ".FPL"
  782.  
  783.         IF g_IsWindows95% = 1 THEN
  784.             ' NOTE: I don't know for sure if this is *always* the correct directory for templates!
  785.             AddSectionFilesToCopyList "FreeStyle_ShellNew", g_SourcePath$, GetWindowsDir() + "ShellNew"
  786.         END IF
  787.  
  788.         ' if needed, copy font files and set "install it" flag
  789.         IF IsQuickScribeFontInstalled() = 0 THEN
  790.             AddSectionFilesToCopyList "FreeStyle_Fonts", g_SourcePath$, GetWindowsSysDir()
  791.             SetSymbolValue "SYM_INSTALL_FONTS", "Y"
  792.         ELSE
  793.             SetSymbolValue "SYM_INSTALL_FONTS", "N"
  794.         END IF
  795.  
  796.         ' copy CTL3Dx.DLL when installing on Windows 3.1x, but not Windows 95
  797.         IF g_IsWindows95% = 0 THEN
  798.             AddSectionFilesToCopyList "Ctl3D", g_SourcePath$, GetWindowsSysDir()
  799.         END IF
  800.  
  801.         RestoreCursor(PrevCursor%)
  802.  
  803.         g_CopyListPrepared% = 1
  804.  
  805.     END IF
  806.  
  807.     ' make sure there is enough room
  808.     GOSUB CHECK_DISK_SPACE
  809.     IF g_EnoughDiskSpace% = 0 THEN
  810.         GOTO SELECT_FOLDERS
  811.     END IF
  812.  
  813.     PrevCursor% = ShowWaitCursor
  814.  
  815.     ' save FreeStyle folder
  816.     CreateIniKeyValue "WIN.INI", "FreeStyle.Setup", "folder", GetSymbolValue("IDC_FREESTYLE_PATH"), cmoOverwrite
  817.  
  818.     ' remove any obsolete files
  819.     IF DoesFileExist(FreeMIDIPath$ + "FMSHELP.EXE", femExists) = 1 THEN
  820.         RemoveFile FreeMIDIPath$ + "FMSHELP.EXE", cmoForce
  821.         ' NOTE: this file is now called FMSHELP.TSK
  822.     END IF
  823.     IF DoesFileExist(FreeStylePath$ + "README.TXT", femExists) = 1 THEN
  824.         RemoveFile FreeStylePath$ + "README.TXT", cmoForce
  825.     END IF
  826.  
  827.     ' create FreeMIDI folder
  828.     CreateDir FreeMIDIPath$, cmoVital
  829.  
  830.     ' create FreeStyle folder
  831.     CreateDir FreeStylePath$, cmoVital
  832.     CreateDir FreeStylePath$ + "Demos", cmoVital
  833.     CreateDir FreeStylePath$ + "Metronom", cmoVital
  834.  
  835.     ' create DefNames folders
  836.     '
  837.     ' NOTE: all DefNames-related items in this script should be kept updated!
  838.     '
  839.     CreateDir DefNamesPath$ + "Alesis", cmoVital
  840.     CreateDir DefNamesPath$ + "Digitech", cmoVital
  841.     CreateDir DefNamesPath$ + "E-mu", cmoVital
  842.     CreateDir DefNamesPath$ + "Ensoniq", cmoVital
  843.     CreateDir DefNamesPath$ + "Kawai", cmoVital
  844.     CreateDir DefNamesPath$ + "Korg", cmoVital
  845.     CreateDir DefNamesPath$ + "Kurzweil", cmoVital
  846.     CreateDir DefNamesPath$ + "Roland", cmoVital
  847.     CreateDir DefNamesPath$ + "TBS", cmoVital
  848.     CreateDir DefNamesPath$ + "Yamaha", cmoVital
  849.  
  850.     RestoreCursor(PrevCursor%)
  851.  
  852.     'DumpCopyList GetSymbolValue("STF_CWDDIR") + "COPYLIST.TXT"
  853.     CopyFilesInCopyList
  854.  
  855.     PrevCursor% = ShowWaitCursor
  856.  
  857.     ' add Registry entries for FreeStyle files
  858.  
  859.     FullFreeStylePath$ = FreeStylePath$ + g_FreeStyleEXEName$
  860.  
  861.     IF g_IsWindows95% = 1 THEN
  862.  
  863.         IF WinExec("regedit /s " + g_TempPath$ + "reg4.dat", 0) < 32 THEN
  864.             NotUsed% = sl_MessageBoxFromId(ERR_NO_REGEDIT, MB_OK + MB_ICONEXCLAMATION)
  865.             GOTO SL_FAIL
  866.         END IF
  867.         SetRegKeyValue "FreeStyle.FSL\DefaultIcon", FullFreeStylePath$ + ",1"
  868.         SetRegKeyValue "FreeStyle.FST\DefaultIcon", FullFreeStylePath$ + ",1"
  869.         SetRegKeyValue "FreeStyle.FSS\DefaultIcon", FullFreeStylePath$ + ",1"
  870.  
  871.     ELSE
  872.  
  873.         IF WinExec("regedit /s " + g_TempPath$ + "reg.dat", 0) < 32 THEN
  874.             NotUsed% = sl_MessageBoxFromId(ERR_NO_REGEDIT, MB_OK + MB_ICONEXCLAMATION)
  875.             GOTO SL_FAIL
  876.         END IF
  877.  
  878.     END IF
  879.  
  880.     SetRegKeyValue "FreeStyle.FSL\shell\open\command", FullFreeStylePath$ + " %1"
  881.     SetRegKeyValue "FreeStyle.FST\shell\open\command", FullFreeStylePath$ + " %1"
  882.     SetRegKeyValue "FreeStyle.FSS\shell\open\command", FullFreeStylePath$ + " %1"
  883.  
  884.     ' add Registry entry for MID files (standard MIDI files)
  885.     IF GetSymbolValue("SYM_OPEN_MID_WITH_FREESTYLE") = "Y" THEN
  886.         CreateRegKeyValue ".MID", "FreeStyle"
  887.     END IF
  888.  
  889.     ' install fonts
  890.     IF GetSymbolValue("SYM_INSTALL_FONTS") = "Y" THEN
  891.         GOSUB INSTALL_FONTS
  892.     END IF
  893.  
  894.     ' add Program Manager icons/Start menu items
  895.     IF GetSymbolValue("SYM_ADD_PROGMAN_ICONS") = "Y" THEN
  896.         GOSUB ADD_PROGMAN_ICONS
  897.     END IF
  898.  
  899.     RestoreCursor(PrevCursor%)
  900.  
  901.     ' let user know lengthy copying is done
  902.     MessageBeep(MB_OK)
  903.  
  904.     GOTO COMPLETE_SETUP
  905.  
  906.  
  907. '*************************************************************************************************
  908. '
  909. ' INSTALL_FONTS
  910. '
  911. '*************************************************************************************************
  912. INSTALL_FONTS:
  913.     PrevCursor% = ShowWaitCursor
  914.     IF InstallFont(g_FontFileName$, GetWindowsSysDir()) = 0 THEN
  915.         NotUsed% = sl_MessageBoxFromId(ERR_NO_INSTALL_FONT, MB_OK + MB_ICONEXCLAMATION)
  916.         GOTO SL_FAIL
  917.     END IF
  918.     RestoreCursor(PrevCursor%)
  919.  
  920.     RETURN
  921.  
  922.  
  923. '*************************************************************************************************
  924. '
  925. ' ADD_PROGMAN_ICONS
  926. '
  927. '*************************************************************************************************
  928. ADD_PROGMAN_ICONS:
  929.     FreeStylePath$    = GetSymbolValue("IDC_FREESTYLE_PATH") + "\"
  930.  
  931.     ' run Program Manager only if running on Windows 3.1...
  932.     IF g_IsWindows95% = 0 THEN
  933. RETRY_PROGMAN:
  934.         IF WinExec("progman.exe", SW_SHOWNORMAL) < 32 THEN
  935.             Button% = sl_MessageBoxFromId(ERR_NO_PROGMAN, MB_RETRYCANCEL + MB_ICONSTOP)
  936.             IF Button% = IDRETRY THEN
  937.                 GOTO RETRY_PROGMAN
  938.             ELSE
  939.                 GOTO ABORT_ICONS
  940.             END IF
  941.         END IF
  942.     END IF
  943.  
  944.     CreateProgmanGroup g_FreeStyleFullName$, "", cmoNone
  945.     ShowProgmanGroup g_FreeStyleFullName$, 1, cmoNone
  946.  
  947.     CreateProgmanItem g_FreeStyleFullName$, g_FreeStyleName$, FreeStylePath$ + g_FreeStyleEXEName$, "", cmoOverwrite
  948.     CreateProgmanItem g_FreeStyleFullName$, g_FreeStyleHelpName$, FreeStylePath$ + g_FreeStyleHLPName$, "", cmoOverwrite
  949.     CreateProgmanItem g_FreeStyleFullName$, g_ReadMeLongName$, FreeStylePath$ + g_ReadMeShortName$, "", cmoOverwrite
  950.  
  951. ABORT_ICONS:
  952.     RETURN
  953.  
  954.  
  955. '*************************************************************************************************
  956. '
  957. ' COMPLETE_SETUP
  958. '
  959. '*************************************************************************************************
  960. COMPLETE_SETUP:
  961.     IF RestartListEmpty() = 0 THEN
  962.         GOTO COMPLETE_SETUP_RESTART
  963.     ELSE
  964.         GOTO COMPLETE_SETUP_NORMAL
  965.     END IF
  966.  
  967.  
  968. '*************************************************************************************************
  969. '
  970. ' COMPLETE_SETUP_NORMAL
  971. '
  972. '*************************************************************************************************
  973. COMPLETE_SETUP_NORMAL:
  974.     IF GetSymbolValue("SYM_ADD_PROGMAN_ICONS") = "Y" THEN
  975.         UserChoice$ = UIStartDlg(g_SetupLibName$, g_DLG_COMPLETE_WITH_ICONS%, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
  976.     ELSE
  977.         UserChoice$ = UIStartDlg(g_SetupLibName$, g_DLG_COMPLETE_WITHOUT_ICONS%, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
  978.     END IF
  979.  
  980.     IF UserChoice$ = "IDC_VIEW_README" THEN
  981.         GOSUB VIEW_README_FILE
  982.         GOTO COMPLETE_SETUP_NORMAL
  983.     END IF
  984.  
  985.     IF g_ShowQuickStartGuide% = 1 THEN
  986.         sl_ShowHelpTopic FreeStylePath$ + g_FreeStyleHLPName$, HLP_QUICK_START_GUIDE
  987.     END IF
  988.  
  989.     GOTO SL_END
  990.  
  991.  
  992. '*************************************************************************************************
  993. '
  994. ' COMPLETE_SETUP_RESTART
  995. '
  996. '*************************************************************************************************
  997. COMPLETE_SETUP_RESTART:
  998.     IF GetSymbolValue("SYM_ADD_PROGMAN_ICONS") = "Y" THEN
  999.         UserChoice$ = UIStartDlg(g_SetupLibName$, g_DLG_RESTART_WITH_ICONS%, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
  1000.     ELSE
  1001.         UserChoice$ = UIStartDlg(g_SetupLibName$, g_DLG_RESTART_WITHOUT_ICONS%, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
  1002.     END IF
  1003.  
  1004.     IF UserChoice$ = "IDC_VIEW_README" THEN
  1005.         GOSUB VIEW_README_FILE
  1006.         GOTO COMPLETE_SETUP_RESTART
  1007.     END IF
  1008.  
  1009.     NotUsed% = sl_MessageBoxFromId(MSG_RESTART_INFO, MB_OK + MB_ICONINFORMATION)
  1010.     GOSUB SL_SHUTDOWN
  1011.     NotUsed% = ExitExecRestart()
  1012.     GOSUB SL_STARTUP
  1013.  
  1014.     NotUsed% = sl_MessageBoxFromId(ERR_RESTART_FAILED, MB_OK + MB_ICONEXCLAMATION)
  1015.     GOTO SL_FAIL
  1016.  
  1017.  
  1018. '*************************************************************************************************
  1019. '
  1020. ' VIEW_README_FILE
  1021. '
  1022. '*************************************************************************************************
  1023. VIEW_README_FILE:
  1024.  
  1025.     ' open file in Notepad
  1026.     IF WinExec("notepad.exe " + GetSymbolValue("IDC_FREESTYLE_PATH") + "\" + g_ReadMeShortName$, SW_SHOWNORMAL) >= 32 THEN
  1027.         sl_RememberSpawnedWindow
  1028.     ELSE
  1029.         NotUsed% = sl_MessageBoxFromId(ERR_NO_VIEW_README, MB_OK + MB_ICONEXCLAMATION)
  1030.     END IF
  1031.  
  1032. RETURN
  1033.